package ksv.cron.v1;

import ksv.cron.CronConfig;
import ksv.cron.CronContext;
import ksv.cron.bean.SysCron;
import reactor.core.publisher.Mono;

import java.time.LocalDateTime;
import java.util.LinkedList;
import java.util.List;
import java.util.function.Consumer;

/**
 * @创建人 wsdc
 * @时间 2021/1/31
 * @描述 加载任务的加载者，提供者
 */
public interface CronLoader {
    /**
     *  根据系统配置加载对应的配置
     * @param cronConfig    配置信息
     * @param now           当前的时间点   可以根据时间点的方式进行增量的查询定时任务
     *
     * 可以选择从
     *  <li>    redis
     *  <li>    mongodb
     *  <li>    mysql
     *  等数据源中加载数据，如果有多个，回对最终的数据源进行去重
     */
    Mono<List<SysCron>> provideCron(CronConfig cronConfig, LocalDateTime now);

    default List<SysCron> provide(CronConfig cronConfig, LocalDateTime now){
        return new LinkedList<>();
    }

}
